package com.xiaoka.ins.corp.api.gpic.dto;

import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlElements;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlValue;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Request")
public class RequestElementGPIC {
	@XmlElementWrapper(name = "InputsList", required = true)
	@XmlElements({ @XmlElement(name = "Inputs", type = InputsElement_gpic.class, required = true), })
	protected List<?> inputsList;

	@XmlElement(name = "Order")
	protected OrderElement order;

	public List<?> getInputsList() {
		return inputsList;
	}

	public void setInputsList(List<?> inputsList) {
		this.inputsList = inputsList;
	}

	public OrderElement getOrder() {
		return order;
	}

	public void setOrder(OrderElement order) {
		this.order = order;
	}

	@XmlAccessorType(XmlAccessType.FIELD)
	@XmlRootElement(name = "Inputs")
	public static class InputsElement_gpic {
		@XmlAttribute
		protected String type;

		@XmlElement(name = "Input")
		protected List<InputElement_gpic> inputList;

		public void setInputs(List<InputElement_gpic> inputs) {
			this.inputList = inputs;
		}

		public String getType() {
			return type;
		}

		public List<InputElement_gpic> getInputList() {
			return inputList;
		}

		public void setType(String type) {
			this.type = type;
		}

		@XmlAccessorType(XmlAccessType.FIELD)
		public static class InputElement_gpic {

			@XmlAttribute
			protected String name;

			@XmlValue
			protected String value;

			public InputElement_gpic() {
			}

			public InputElement_gpic(String name, String value) {
				super();
				this.name = name;
				this.value = value;
			}

			public void setName(String name) {
				this.name = name;
			}

			public void setValue(String value) {
				this.value = value;
			}

			public String getName() {
				return name;
			}

			public String getValue() {
				return value;
			}

		}
	}

	@XmlAccessorType(XmlAccessType.FIELD)
	@XmlType(name = "", propOrder = { "tbOrderId", "premium", "subOrderList" })
	public static class OrderElement {

		@XmlElement(name = "TBOrderId")
		protected String tbOrderId;
		@XmlElement(name = "Premium")
		protected String premium;
		@XmlElement(name = "SubOrderList", required = true)
		protected SubOrderList subOrderList;

		public String getTBOrderId() {
			return tbOrderId;
		}

		public void setTBOrderId(String value) {
			this.tbOrderId = value;
		}

		public String getPremium() {
			return premium;
		}

		public void setPremium(String value) {
			this.premium = value;
		}

		public SubOrderList getSubOrderList() {
			return subOrderList;
		}

		public void setSubOrderList(SubOrderList value) {
			this.subOrderList = value;
		}

		@XmlAccessorType(XmlAccessType.FIELD)
		@XmlType(name = "", propOrder = { "subOrder" })
		public static class SubOrderList {

			@XmlElement(name = "SubOrder", required = true)
			protected List<SubOrder> subOrder;

			public List<SubOrder> getSubOrder() {
				return subOrder;
			}

			public void setSubOrder(List<SubOrder> subOrder) {
				this.subOrder = subOrder;
			}

			@XmlAccessorType(XmlAccessType.FIELD)
			@XmlType(name = "", propOrder = { "tbOrderId", "itemId", "premium", "proposalNo"})
			public static class SubOrder {

				@XmlElement(name = "TBOrderId")
				protected String tbOrderId;
				@XmlElement(name = "ItemId")
				protected String itemId;
				@XmlElement(name = "Premium")
				protected String premium;
				@XmlAttribute(name = "type")
				protected String type;
				@XmlElement(name = "ProposalNo")
				protected String proposalNo;

				public SubOrder() {
				}

				public SubOrder(String type, String tbOrderId, String itemId,
						String premium) {
					this.tbOrderId = tbOrderId;
					this.itemId = itemId;
					this.premium = premium;
					this.type = type;
				}

				public String getTbOrderId() {
					return tbOrderId;
				}

				public void setTbOrderId(String tbOrderId) {
					this.tbOrderId = tbOrderId;
				}

				public String getProposalNo() {
					return proposalNo;
				}

				public void setProposalNo(String proposalNo) {
					this.proposalNo = proposalNo;
				}

				public String getItemId() {
					return itemId;
				}

				public void setItemId(String value) {
					this.itemId = value;
				}

				public String getPremium() {
					return premium;
				}

				public void setPremium(String value) {
					this.premium = value;
				}

				public String getType() {
					return type;
				}

				public void setType(String value) {
					this.type = value;
				}

			}

		}
	}

}
